package com.sakura.taos.tool.manipulator.conf;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.HashSet;
import java.util.Set;


/**
 * Swagger 接口文档配置
 *
 * @author 小坤坤
 * @date 2020/7/30 17:52
 */
@Configuration
@EnableSwagger2
public class SwaggerConf {
    @Bean
    public Docket createRestApi() {
        Set<String> of = new HashSet<>();
        of.add("https");
        of.add("http");
        return new Docket(DocumentationType.OAS_30) // 指定api类型为swagger2
                .pathMapping("/")
                .enable(true)//定义是否开启swagger，false为关闭，可以通过变量控制
                .apiInfo(getApiInfo())// 用于定义api文档汇总信息,页面上半部分显示内容
                .select()//启动api选择的生成器。
                .apis(RequestHandlerSelectors.basePackage("com.sakura.taos.tool.manipulator"))// 指定controller包
                .paths(PathSelectors.any())// 所有controller
                .build()
                .groupName("defaultBB")
                // 支持的通讯协议集合
                .protocols(of)
                ;
    }

    private ApiInfo getApiInfo() {
        Contact contact = new Contact("贺坤", "blog.csdn.net", "503407838@QQ.com");// 联系人信息
        ApiInfo build = new ApiInfoBuilder()
                .title("SpringBoot整合Swagger") // 文档页标题
                .description("SpringBoot整合Swagger，详细信息......") // 详细信息
                .version("0.0.1") // 文档版本号
                .contact(contact)
                .license("许可证")
                .licenseUrl("http://www.baidu.com") // 网站地址
                .build();
        return build;
    }
}
